#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main(){
  int n;
  cin>>n;
  vector<int> v(n);
  for(int i=0;i<n;i++){
    cin>>v[i];
  }
  sort(v.begin(),v.end());
  int day=0;
  for(int i=0;i<n;i++){
    if(day<=v[i])day++;
  }
  cout<<day-1<<endl;

  return 0;
}
//题目：刷题
//
//描述：
//小C同学为了提高自己的编程实力制定了做题计划，在第 k 天时，他必须要完成 k 道题，否则他就会偷懒。小C同学现在找到了一个题库，一共有 n 套题单，
// 每一套题单中有一定数量的题目。但是他十分挑剔，每套题单他只会使用一次，每一天也只能使用一套题单里的题目，之后那套题单就会弃之不用。对于每套题单，
// 他不必完成题单内所有的题。
//那么问题来了，小C同学最多做题几天才偷懒呢？
//输入格式
//第一行，一个整数为 n，表示有多少套题单。
//第二行 n 个整数 a[1] , a[2] , … a[n]，分别表示每套题单有多少道题。
//输出格式
//仅输出一行用一个整数表示答案。
//输入样例
//4
//3 1 4 1
//输出样例
//3